package es;

public class EstrategiaEvolucionaria {

	private int num_melhoras;

	public void executa(int numero_rodadas, CromossomoReal pai)
			throws CloneNotSupportedException {
		int rodada = 0;
		while (rodada < numero_rodadas) {
			CromossomoReal filho = (CromossomoReal) pai.clone();
			filho.mutacao();
			if (filho.calculaAvaliacao() < pai.calculaAvaliacao()) {
				pai = filho;
				num_melhoras++;
			}
			if (rodada > 100) {
				if (1.0 * num_melhoras / rodada > 0.2) {
					pai.setDesvio(pai.getDesvio() / 0.9);
				} else {
					pai.setDesvio(pai.getDesvio() * 0.9);
				}
			}
			rodada++;
		}
	}
}